// STL --- illustra l'uso di insert ed erase

#include <iostream>
#include <vector>
using namespace std;


int main()
{
	vector<char> v(10);
	vector<char> v2;
	char str[] = "<Vector>";
	int i;


	// inizializza v
	for(i=0; i<10; i++) v[i] = i+'a';

	// copia in v2 i caratteri contenuti in str
	for(i=0; str[i]; i++) v2.push_back(str[i]);

	// visualizza il contenuto originale del vettore
	cout << "Contenuto originale di v:\n";
	for(i=0; i<v.size(); i++) cout << v[i] << " ";
	cout << "\n\n";

	vector<char>::iterator p = v.begin();
	p+=2; // punta al terzo elemento

	// inserisce 10 'X' in v
	v.insert(p, 10, 'X');

	// visualizza il contenuto dopo l'inserimento
	cout << "Dimensioni dopo l'inserimento delle X  " << v.size() << endl;
	cout << "Contenuto dopo l'inserimento =\n";
	for(i=0; i<v.size(); i++) cout << v[i] << " ";
	cout << "\n\n";

	// rimozione degli elementi
	p=v.begin();
	p+=2; // punta al terzo elemento
	v.erase(p,p+10); // rimuove i 10 elementi successivi

	// visualizza il contenuto dopo la cancellazione
	cout << "Dimensioni dopo la cancellazione  " << v.size() << endl;
	cout << "Contenuto dopo la cancellazione =\n";
	for(i=0; i<v.size(); i++) cout << v[i] << " ";
	cout << "\n\n";

	// inserisce v2 in v
	v.insert(p,v2.begin(),v2.end());
	cout << "Dimensioni dopo l'inserimento di v2 = " << v.size() << endl;
	cout << "Contenuto dopo l'inserimento =\n";
	for(i=0; i<v.size(); i++) cout << v[i] << " ";
	cout << "\n\n";


	return 0;
}